package xiongwei.jiang.util;

/**
 * 自定义字符串工具类
 *
 * @author 天之蓝
 */
public class StringUtils {
    /**
     * 是否空
     * <pre>
     * StringUtils.isBlank(null)        = true
     * StringUtils.isBlank("")          = true
     * StringUtils.isBlank(" ")         = true
     * StringUtils.isBlank("  ")        = true
     * StringUtils.isBlank("value")     = false
     * StringUtils.isBlank(" value")    = false
     * StringUtils.isBlank("value ")    = false
     * StringUtils.isBlank(" value ")   = false
     * StringUtils.isBlank("  value ")  = false
     * StringUtils.isBlank(" value  ")  = false
     * StringUtils.isBlank("  value  ") = false
     * </pre>
     *
     * @param src 字符串
     * @return true-空，false-非空
     * @author 天之蓝
     */
    public static boolean isBlank(String src) {
        return src == null || src.trim().length() == 0;
    }

    /**
     * 是否非空
     * <pre>
     * StringUtils.isNotBlank(null)        = false
     * StringUtils.isNotBlank("")          = false
     * StringUtils.isNotBlank(" ")         = false
     * StringUtils.isNotBlank("  ")        = false
     * StringUtils.isNotBlank("value")     = true
     * StringUtils.isNotBlank(" value")    = true
     * StringUtils.isNotBlank("value ")    = true
     * StringUtils.isNotBlank(" value ")   = true
     * StringUtils.isNotBlank("  value ")  = true
     * StringUtils.isNotBlank(" value  ")  = true
     * StringUtils.isNotBlank("  value  ") = true
     * </pre>
     *
     * @param src 字符串
     * @return true-非空，false-空
     * @author 天之蓝
     */
    public static boolean isNotBlank(String src) {
        return !isBlank(src);
    }

    /**
     * Unicode 字符集转 UTF-8 编码
     *
     * @param unicode Unicode 字符集
     * @return UTF-8 编码
     * @author 天之蓝
     */
    public static String unicodeToUTF8(String unicode) {
        if (isBlank(unicode)) {
            throw new NullPointerException();
        }
        StringBuilder temp = new StringBuilder();
        int maxLoop = unicode.length();
        for (int i = 0; i < maxLoop; i++) {
            if (unicode.charAt(i) == '\\') {
                if ((i < maxLoop - 5) && ((unicode.charAt(i + 1) == 'u') || (unicode.charAt(i + 1) == 'U'))) {
                    temp.append(Integer.parseInt(unicode.substring(i + 2, i + 6), 16));
                    i += 5;
                } else {
                    temp.append(unicode.charAt(i));
                }
            } else {
                temp.append(unicode.charAt(i));
            }
        }
        return temp.toString();
    }
}
